/**
 * 
 */
package com.cplsystems.incidencias.vm.personal.utils;

import java.util.ArrayList;
import java.util.List;

import org.zkoss.bind.Validator;
import org.zkoss.image.Image;

import com.cplsystems.incidencias.app.MetaData;
import com.cplsystems.incidencias.app.utils.IncidenciasConstants;
import com.cplsystems.incidencias.app.utils.IncidenciasUtils;
import com.cplsystems.incidencias.business.Categoria;
import com.cplsystems.incidencias.business.DatosAcademicos;
import com.cplsystems.incidencias.business.DependenciasEconomicas;
import com.cplsystems.incidencias.business.Documentacion;
import com.cplsystems.incidencias.business.DocumentosCalidad;
import com.cplsystems.incidencias.business.Estado;
import com.cplsystems.incidencias.business.EstadoCivil;
import com.cplsystems.incidencias.business.ExperienciaLaboral;
import com.cplsystems.incidencias.business.FormaPago;
import com.cplsystems.incidencias.business.Municipio;
import com.cplsystems.incidencias.business.NivelAcademico;
import com.cplsystems.incidencias.business.Organizacion;
import com.cplsystems.incidencias.business.ReferenciasPersonales;
import com.cplsystems.incidencias.business.Sexo;
import com.cplsystems.incidencias.business.Status;
import com.cplsystems.incidencias.business.Sucursal;
import com.cplsystems.incidencias.business.TipoNomina;
import com.cplsystems.incidencias.business.TipoPersonal;
import com.cplsystems.incidencias.business.TipoSueldo;
import com.cplsystems.incidencias.business.Transaccion;
import com.cplsystems.incidencias.utils.catalogs.Catalogos;

/**
 * @author César Palalía López (csr.plz@aisa-automation.com)
 * 
 */
public class PersonalVariables extends MetaData {

	private static final long serialVersionUID = -7893043877036843928L;

	protected List<EstadoCivil> estadosCiviles;
	protected EstadoCivil estadoCivilSeleccionado;
	protected List<Estado> entidades;
	protected Estado estadoSeleccionado;
	protected List<Municipio> municipios;
	protected Municipio municipioSeleccionado;
	protected List<Sexo> sexos;
	protected Sexo sexoSeleccionado;
	protected List<DatosAcademicos> listaDatosAcademicos;
	protected DatosAcademicos datoAcademicoSeleccionado;
	protected DatosAcademicos newDatoAcademico;

	protected List<NivelAcademico> nivelesAcademicosCatalogo;
	protected NivelAcademico nivelAcademicoSeleccionado;

	protected List<Status> statusCatalogo;
	protected Status statusSeleccionado;

	protected List<Documentacion> listaDocumentos;
	protected Documentacion documentacionSeleccionada;

	protected List<String> catalogoTipoDocumento;
	protected String tipoDocumentoSeleccionado;
	protected Documentacion nuevoDocumento;

	protected List<DocumentosCalidad> listaDocumentosCalidad;
	protected DocumentosCalidad documentacionCalidadSeleccionada;

	protected List<String> catalogoGrupoSanguineo;
	protected String grupoSanguineoSeleccionado;

	protected List<String> catalogoBancos;
	protected String bancoSeleccionado;

	protected List<DependenciasEconomicas> dependenciasEconomicas;
	protected List<ReferenciasPersonales> referenciasPersonales;

	protected List<ExperienciaLaboral> experienciasLaborales;
	protected ExperienciaLaboral nuevaExperienciaLaboral;
	protected ExperienciaLaboral experienciaLaboralSeleccionada;

	protected List<TipoPersonal> catalogoTipoPersonal;
	protected TipoPersonal tipoPersonalSeleccionado;

	protected List<TipoSueldo> catalogoTipoSueldo;
	protected TipoSueldo tipoSueldoSeleccionado;

	protected List<Categoria> catalogoCategorias;
	protected Categoria categoriaSeleccionada;

	protected List<TipoNomina> catalogoTipoNomina;
	protected TipoNomina tipoNominaSeleccionada;

	protected List<FormaPago> catalogoFormaPago;
	protected FormaPago formaPagoSeleccionada;

	protected List<String> catalogoDespidos;
	protected String despidoSeleccionado;

	protected List<String> catalogoHorarioLaboral;
	protected String horarioLaboralSeleccionado;

	protected Validator personalValidator;

	protected String reporteTiempo = "No";
	protected String tarjetaTiempo = "No";

	protected Image pictureProfil;

	protected byte[] imageInBytes;
	protected String imageFormat;

	protected Transaccion transaccion;

	protected List<Sucursal> sucursales;
	protected Sucursal sucursalSeleccionada;
	private Organizacion organizacion;

	public void init() {
		super.init();
		organizacion = (Organizacion) sessionUtils
				.getFromSession(IncidenciasUtils
						.encrypt(IncidenciasConstants.FIRMA));
		municipios = new ArrayList<Municipio>();
		listaDatosAcademicos = new ArrayList<DatosAcademicos>();

		newDatoAcademico = new DatosAcademicos();
		listaDocumentos = new ArrayList<Documentacion>();
		documentacionSeleccionada = new Documentacion();
		nuevoDocumento = new Documentacion();
		listaDocumentosCalidad = new ArrayList<DocumentosCalidad>();
		documentacionCalidadSeleccionada = new DocumentosCalidad();
		experienciasLaborales = new ArrayList<ExperienciaLaboral>();
		nuevaExperienciaLaboral = new ExperienciaLaboral();
		experienciaLaboralSeleccionada = new ExperienciaLaboral();

		datosPersonales.setTipoSangre(grupoSanguineoSeleccionado);
		datosAcademicos.setNivelacademico(nivelAcademicoSeleccionado);
		datosAcademicos.setStatus(statusSeleccionado);

		persona.setDadoDeBajo(false);
		transaccion = new Transaccion();

		HORARIOS_LABORALES: {
			catalogoHorarioLaboral = Catalogos.HORARIO_LABORAL;
			horarioLaboralSeleccionado = catalogoHorarioLaboral.get(0);
		}

		DESPIDOS: {
			catalogoDespidos = Catalogos.DESPIDOS;
			despidoSeleccionado = catalogoDespidos.get(0);
		}

		FORMA_PAGO: {
			catalogoFormaPago = formaPagoService.getAll();
			formaPagoSeleccionada = catalogoFormaPago.get(0);
		}

		TIPO_NOMINA: {
			catalogoTipoNomina = tipoNominaService.getAll();
			tipoNominaSeleccionada = catalogoTipoNomina.get(0);
		}

		CATEGORIA: {
			catalogoCategorias = categoriaService.getAll();
			categoriaSeleccionada = catalogoCategorias.get(0);
		}

		TIPO_SUELDO: {
			catalogoTipoSueldo = tipoSueldoService.getAll();
			tipoSueldoSeleccionado = catalogoTipoSueldo.get(0);
		}

		TIPO_PERSONAL: {
			catalogoTipoPersonal = tipoPersonalService.getAll();
			tipoPersonalSeleccionado = catalogoTipoPersonal.get(0);
		}

		EDO_CIVIL: {
			estadosCiviles = estadoCivilService.getAll();
			if (estadosCiviles.size() > 0) {
				estadoCivilSeleccionado = estadosCiviles.get(0);
			}
		}
		ESTADOS: {
			entidades = estadoService.getAll();
			if (entidades.size() > 0) {
				estadoSeleccionado = entidades.get(0);
				municipios = municipioService
						.getMunicipioByEstado(estadoSeleccionado);
				municipioSeleccionado = municipios.get(0);
			}
		}
		SEXO: {
			sexos = sexoService.getAll();
			if (sexos.size() > 0) {
				sexoSeleccionado = sexos.get(0);
			}
		}
		NIVEL_ACADEMICO: {
			nivelesAcademicosCatalogo = nivelAcademicoService.getAll();
			if (nivelesAcademicosCatalogo.size() > 0) {
				nivelAcademicoSeleccionado = nivelesAcademicosCatalogo.get(0);
			} else {
				nivelAcademicoSeleccionado = new NivelAcademico();
			}
		}
		STATUS: {
			statusCatalogo = statusService.getAll();
			if (statusCatalogo.size() > 0) {
				statusSeleccionado = statusCatalogo.get(0);
			} else {
				statusSeleccionado = new Status();
			}
		}

		TIPO_DOCUMENTO: {
			catalogoTipoDocumento = Catalogos.TIPO_DOCUMENTO;
			tipoDocumentoSeleccionado = catalogoTipoDocumento.get(0);
		}

		GRUPO_SANGUINEO: {
			catalogoGrupoSanguineo = Catalogos.TIPO_SANGRE;
			grupoSanguineoSeleccionado = catalogoGrupoSanguineo.get(0);
		}

		BANCOS: {
			catalogoBancos = Catalogos.BANCOS;
			bancoSeleccionado = catalogoBancos.get(0);
		}
		DOMICILIO: {
			domicilio.setMunicipio(municipioSeleccionado);
		}

		DEPENDENCIAS_ECONOMICAS: {
			dependenciasEconomicas = new ArrayList<DependenciasEconomicas>();
		}
		REFERENCIAS_PERSONALES: {
			referenciasPersonales = new ArrayList<ReferenciasPersonales>();
		}

		SUCURSALES: {
			sucursales = sucursalService
					.getSucursalesByOrganizacion(organizacion);
			if (sucursales != null) {
				sucursalSeleccionada = sucursales.get(0);	
			}
			
		}

	}

	public List<EstadoCivil> getEstadosCiviles() {
		return estadosCiviles;
	}

	public void setEstadosCiviles(List<EstadoCivil> estadosCiviles) {
		this.estadosCiviles = estadosCiviles;
	}

	public EstadoCivil getEstadoCivilSeleccionado() {
		return estadoCivilSeleccionado;
	}

	public void setEstadoCivilSeleccionado(EstadoCivil estadoCivilSeleccionado) {
		this.estadoCivilSeleccionado = estadoCivilSeleccionado;
	}

	public List<Estado> getEntidades() {
		return entidades;
	}

	public void setEntidades(List<Estado> entidades) {
		this.entidades = entidades;
	}

	public Estado getEstadoSeleccionado() {
		return estadoSeleccionado;
	}

	public void setEstadoSeleccionado(Estado estadoSeleccionado) {
		this.estadoSeleccionado = estadoSeleccionado;
	}

	public List<Municipio> getMunicipios() {
		return municipios;
	}

	public void setMunicipios(List<Municipio> municipios) {
		this.municipios = municipios;
	}

	public Municipio getMunicipioSeleccionado() {
		return municipioSeleccionado;
	}

	public void setMunicipioSeleccionado(Municipio municipioSeleccionado) {
		this.municipioSeleccionado = municipioSeleccionado;
	}

	public List<Sexo> getSexos() {
		return sexos;
	}

	public void setSexos(List<Sexo> sexos) {
		this.sexos = sexos;
	}

	public Sexo getSexoSeleccionado() {
		return sexoSeleccionado;
	}

	public void setSexoSeleccionado(Sexo sexoSeleccionado) {
		this.sexoSeleccionado = sexoSeleccionado;
	}

	public List<DatosAcademicos> getListaDatosAcademicos() {
		return listaDatosAcademicos;
	}

	public void setListaDatosAcademicos(
			List<DatosAcademicos> listaDatosAcademicos) {
		this.listaDatosAcademicos = listaDatosAcademicos;
	}

	public DatosAcademicos getDatoAcademicoSeleccionado() {
		return datoAcademicoSeleccionado;
	}

	public void setDatoAcademicoSeleccionado(
			DatosAcademicos datoAcademicoSeleccionado) {
		this.datoAcademicoSeleccionado = datoAcademicoSeleccionado;
	}

	public DatosAcademicos getNewDatoAcademico() {
		return newDatoAcademico;
	}

	public void setNewDatoAcademico(DatosAcademicos newDatoAcademico) {
		this.newDatoAcademico = newDatoAcademico;
	}

	public List<NivelAcademico> getNivelesAcademicosCatalogo() {
		return nivelesAcademicosCatalogo;
	}

	public void setNivelesAcademicosCatalogo(
			List<NivelAcademico> nivelesAcademicosCatalogo) {
		this.nivelesAcademicosCatalogo = nivelesAcademicosCatalogo;
	}

	public NivelAcademico getNivelAcademicoSeleccionado() {
		return nivelAcademicoSeleccionado;
	}

	public void setNivelAcademicoSeleccionado(
			NivelAcademico nivelAcademicoSeleccionado) {
		this.nivelAcademicoSeleccionado = nivelAcademicoSeleccionado;
	}

	public List<Status> getStatusCatalogo() {
		return statusCatalogo;
	}

	public void setStatusCatalogo(List<Status> statusCatalogo) {
		this.statusCatalogo = statusCatalogo;
	}

	public Status getStatusSeleccionado() {
		return statusSeleccionado;
	}

	public void setStatusSeleccionado(Status statusSeleccionado) {
		this.statusSeleccionado = statusSeleccionado;
	}

	public Documentacion getDocumentacionSeleccionada() {
		return documentacionSeleccionada;
	}

	public void setDocumentacionSeleccionada(
			Documentacion documentacionSeleccionada) {
		this.documentacionSeleccionada = documentacionSeleccionada;
	}

	public List<Documentacion> getListaDocumentos() {
		return listaDocumentos;
	}

	public void setListaDocumentos(List<Documentacion> listaDocumentos) {
		this.listaDocumentos = listaDocumentos;
	}

	public String getTipoDocumentoSeleccionado() {
		return tipoDocumentoSeleccionado;
	}

	public void setTipoDocumentoSeleccionado(String tipoDocumentoSeleccionado) {
		this.tipoDocumentoSeleccionado = tipoDocumentoSeleccionado;
	}

	public List<String> getCatalogoTipoDocumento() {
		return catalogoTipoDocumento;
	}

	public void setCatalogoTipoDocumento(List<String> catalogoTipoDocumento) {
		this.catalogoTipoDocumento = catalogoTipoDocumento;
	}

	public Documentacion getNuevoDocumento() {
		return nuevoDocumento;
	}

	public void setNuevoDocumento(Documentacion nuevoDocumento) {
		this.nuevoDocumento = nuevoDocumento;
	}

	public List<DocumentosCalidad> getListaDocumentosCalidad() {
		return listaDocumentosCalidad;
	}

	public void setListaDocumentosCalidad(
			List<DocumentosCalidad> listaDocumentosCalidad) {
		this.listaDocumentosCalidad = listaDocumentosCalidad;
	}

	public DocumentosCalidad getDocumentacionCalidadSeleccionada() {
		return documentacionCalidadSeleccionada;
	}

	public void setDocumentacionCalidadSeleccionada(
			DocumentosCalidad documentacionCalidadSeleccionada) {
		this.documentacionCalidadSeleccionada = documentacionCalidadSeleccionada;
	}

	public List<String> getCatalogoGrupoSanguineo() {
		return catalogoGrupoSanguineo;
	}

	public void setCatalogoGrupoSanguineo(List<String> catalogoGrupoSanguineo) {
		this.catalogoGrupoSanguineo = catalogoGrupoSanguineo;
	}

	public String getGrupoSanguineoSeleccionado() {
		return grupoSanguineoSeleccionado;
	}

	public void setGrupoSanguineoSeleccionado(String grupoSanguineoSeleccionado) {
		this.grupoSanguineoSeleccionado = grupoSanguineoSeleccionado;
	}

	public List<String> getCatalogoBancos() {
		return catalogoBancos;
	}

	public void setCatalogoBancos(List<String> catalogoBancos) {
		this.catalogoBancos = catalogoBancos;
	}

	public String getBancoSeleccionado() {
		return bancoSeleccionado;
	}

	public void setBancoSeleccionado(String bancoSeleccionado) {
		this.bancoSeleccionado = bancoSeleccionado;
	}

	public List<DependenciasEconomicas> getDependenciasEconomicas() {
		return dependenciasEconomicas;
	}

	public void setDependenciasEconomicas(
			List<DependenciasEconomicas> dependenciasEconomicas) {
		this.dependenciasEconomicas = dependenciasEconomicas;
	}

	public List<ReferenciasPersonales> getReferenciasPersonales() {
		return referenciasPersonales;
	}

	public void setReferenciasPersonales(
			List<ReferenciasPersonales> referenciasPersonales) {
		this.referenciasPersonales = referenciasPersonales;
	}

	public List<ExperienciaLaboral> getExperienciasLaborales() {
		return experienciasLaborales;
	}

	public void setExperienciasLaborales(
			List<ExperienciaLaboral> experienciasLaborales) {
		this.experienciasLaborales = experienciasLaborales;
	}

	public ExperienciaLaboral getNuevaExperienciaLaboral() {
		return nuevaExperienciaLaboral;
	}

	public void setNuevaExperienciaLaboral(
			ExperienciaLaboral nuevaExperienciaLaboral) {
		this.nuevaExperienciaLaboral = nuevaExperienciaLaboral;
	}

	public ExperienciaLaboral getExperienciaLaboralSeleccionada() {
		return experienciaLaboralSeleccionada;
	}

	public void setExperienciaLaboralSeleccionada(
			ExperienciaLaboral experienciaLaboralSeleccionada) {
		this.experienciaLaboralSeleccionada = experienciaLaboralSeleccionada;
	}

	public List<TipoPersonal> getCatalogoTipoPersonal() {
		return catalogoTipoPersonal;
	}

	public void setCatalogoTipoPersonal(List<TipoPersonal> catalogoTipoPersonal) {
		this.catalogoTipoPersonal = catalogoTipoPersonal;
	}

	public TipoPersonal getTipoPersonalSeleccionado() {
		return tipoPersonalSeleccionado;
	}

	public void setTipoPersonalSeleccionado(
			TipoPersonal tipoPersonalSeleccionado) {
		this.tipoPersonalSeleccionado = tipoPersonalSeleccionado;
	}

	public List<TipoSueldo> getCatalogoTipoSueldo() {
		return catalogoTipoSueldo;
	}

	public void setCatalogoTipoSueldo(List<TipoSueldo> catalogoTipoSueldo) {
		this.catalogoTipoSueldo = catalogoTipoSueldo;
	}

	public TipoSueldo getTipoSueldoSeleccionado() {
		return tipoSueldoSeleccionado;
	}

	public void setTipoSueldoSeleccionado(TipoSueldo tipoSueldoSeleccionado) {
		this.tipoSueldoSeleccionado = tipoSueldoSeleccionado;
	}

	public List<Categoria> getCatalogoCategorias() {
		return catalogoCategorias;
	}

	public void setCatalogoCategorias(List<Categoria> catalogoCategorias) {
		this.catalogoCategorias = catalogoCategorias;
	}

	public Categoria getCategoriaSeleccionada() {
		return categoriaSeleccionada;
	}

	public void setCategoriaSeleccionada(Categoria categoriaSeleccionada) {
		this.categoriaSeleccionada = categoriaSeleccionada;
	}

	public List<TipoNomina> getCatalogoTipoNomina() {
		return catalogoTipoNomina;
	}

	public void setCatalogoTipoNomina(List<TipoNomina> catalogoTipoNomina) {
		this.catalogoTipoNomina = catalogoTipoNomina;
	}

	public TipoNomina getTipoNominaSeleccionada() {
		return tipoNominaSeleccionada;
	}

	public void setTipoNominaSeleccionada(TipoNomina tipoNominaSeleccionada) {
		this.tipoNominaSeleccionada = tipoNominaSeleccionada;
	}

	public List<FormaPago> getCatalogoFormaPago() {
		return catalogoFormaPago;
	}

	public void setCatalogoFormaPago(List<FormaPago> catalogoFormaPago) {
		this.catalogoFormaPago = catalogoFormaPago;
	}

	public FormaPago getFormaPagoSeleccionada() {
		return formaPagoSeleccionada;
	}

	public void setFormaPagoSeleccionada(FormaPago formaPagoSeleccionada) {
		this.formaPagoSeleccionada = formaPagoSeleccionada;
	}

	public List<String> getCatalogoDespidos() {
		return catalogoDespidos;
	}

	public void setCatalogoDespidos(List<String> catalogoDespidos) {
		this.catalogoDespidos = catalogoDespidos;
	}

	public String getDespidoSeleccionado() {
		return despidoSeleccionado;
	}

	public void setDespidoSeleccionado(String despidoSeleccionado) {
		this.despidoSeleccionado = despidoSeleccionado;
	}

	public Validator getPersonalValidator() {
		return personalValidator;
	}

	public void setPersonalValidator(Validator personalValidator) {
		this.personalValidator = personalValidator;
	}

	public List<String> getCatalogoHorarioLaboral() {
		return catalogoHorarioLaboral;
	}

	public void setCatalogoHorarioLaboral(List<String> catalogoHorarioLaboral) {
		this.catalogoHorarioLaboral = catalogoHorarioLaboral;
	}

	public String getHorarioLaboralSeleccionado() {
		return horarioLaboralSeleccionado;
	}

	public void setHorarioLaboralSeleccionado(String horarioLaboralSeleccionado) {
		this.horarioLaboralSeleccionado = horarioLaboralSeleccionado;
	}

	public String getReporteTiempo() {
		return reporteTiempo;
	}

	public void setReporteTiempo(String reporteTiempo) {
		this.reporteTiempo = reporteTiempo;
	}

	public String getTarjetaTiempo() {
		return tarjetaTiempo;
	}

	public void setTarjetaTiempo(String tarjetaTiempo) {
		this.tarjetaTiempo = tarjetaTiempo;
	}

	public Image getPictureProfil() {
		return pictureProfil;
	}

	public void setPictureProfil(Image pictureProfil) {
		this.pictureProfil = pictureProfil;
	}

	public byte[] getImageInBytes() {
		return imageInBytes;
	}

	public void setImageInBytes(byte[] imageInBytes) {
		this.imageInBytes = imageInBytes;
	}

	public String getImageFormat() {
		return imageFormat;
	}

	public void setImageFormat(String imageFormat) {
		this.imageFormat = imageFormat;
	}

	public Transaccion getTransaccion() {
		return transaccion;
	}

	public void setTransaccion(Transaccion transaccion) {
		this.transaccion = transaccion;
	}

	public List<Sucursal> getSucursales() {
		return sucursales;
	}

	public void setSucursales(List<Sucursal> sucursales) {
		this.sucursales = sucursales;
	}

	public Sucursal getSucursalSeleccionada() {
		return sucursalSeleccionada;
	}

	public void setSucursalSeleccionada(Sucursal sucursalSeleccionada) {
		this.sucursalSeleccionada = sucursalSeleccionada;
	}

	public Organizacion getOrganizacion() {
		return organizacion;
	}

	public void setOrganizacion(Organizacion organizacion) {
		this.organizacion = organizacion;
	}

}
